package dao.mysql;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import beans.Curso;
import conexion.BDConexion;
import dao.interfaces.CursoDAO;

public class MySqlCursoDAO implements CursoDAO {

	@Override
	public List<Curso> ListarCursoFiltro(String codigo, String nombre,String estado) {
		List<Curso> lista = new ArrayList<Curso>();
		Connection cn = null;
		PreparedStatement pst = null;
		ResultSet rs = null;
		try {
			if (codigo.isEmpty()) {
				codigo = null;
			}
			if (nombre.isEmpty()) {
				nombre = null;
			}
			if (estado.isEmpty()) {
				estado = null;
			}
			
			System.out.println(codigo+"\n"+nombre+"\n"+estado);
			
			cn = new BDConexion().obtenerConexion();
			String sql = "SELECT * FROM bd_inictel_dcc.curso c where c.cod_cur= ifnull(?,c.cod_cur) and c.nom_cur  like  concat('%',ifnull(?,''),'%') and estado_cur = ifnull(?,estado_cur);";
			pst = cn.prepareStatement(sql);
			pst.setString(1, codigo);
			pst.setString(2, nombre);
			pst.setString(3, estado);
			rs = pst.executeQuery();
			while (rs.next()) {
				Curso c = new Curso(rs.getString(1), rs.getString(2),
						rs.getString(3), rs.getString(4), rs.getInt(5));
				lista.add(c);
			}
		} catch (Exception e) {

		} finally {
			try {
				if (cn != null) {
					cn.close();
				}
				if (pst != null) {
					pst.close();
				}
				if (rs != null) {
					rs.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
		return lista;
	}
	
	@Override
	public List<Curso> ListarCurso() {
		List<Curso> lista = new ArrayList<Curso>();
		Connection cn = null;
		PreparedStatement pst = null;
		ResultSet rs = null;
		try {
			cn = new BDConexion().obtenerConexion();
			String sql = "SELECT * FROM bd_inictel_dcc.curso";
			pst = cn.prepareStatement(sql);
			rs = pst.executeQuery();
			while (rs.next()) {
				Curso c = new Curso(rs.getString(1), rs.getString(2),
						rs.getString(3), rs.getString(4), rs.getInt(5));
				lista.add(c);
			}
		} catch (Exception e) {

		} finally {
			try {
				if (cn != null) {
					cn.close();
				}
				if (pst != null) {
					pst.close();
				}
				if (rs != null) {
					rs.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
		return lista;
	}

	@Override
	public int EliminarCurso(String codigo) {
		int salida = -1;
		Connection cn = null;
		PreparedStatement pst = null;
		
		System.out.println("codigo"+codigo);
		try {
			cn = new BDConexion().obtenerConexion();
			String sql = "Update  bd_inictel_dcc.curso set estado_cur = 2  WHERE cod_cur = ?;"; 
			pst = cn.prepareStatement(sql);
			
			pst.setString(1, codigo);
			
			salida = pst.executeUpdate();

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				cn.close();
				pst.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}

		return salida;
	}

	@Override
	public int RegistrarCurso(Curso bean) {
		int salida = -1;
		Connection cn = null;
		PreparedStatement pst = null;
		try {
			cn = new BDConexion().obtenerConexion();
			String sql = "INSERT INTO bd_inictel_dcc.curso VALUES(?,?,?,?,?);";
			pst = cn.prepareStatement(sql);
			pst.setString(1, bean.getCodigo());
			pst.setString(2, bean.getNombre());
			pst.setString(3, bean.getDescripcion());
			pst.setString(4, bean.getArea());
			pst.setInt(5, bean.getEstado());
			salida = pst.executeUpdate();

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				cn.close();
				pst.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}

		return salida;
	}

	@Override
	public int ActualizarCurso(Curso bean) {

		int salida = -1;
		Connection cn = null;
		PreparedStatement pst = null;
		try {
			cn = new BDConexion().obtenerConexion();
			String sql = "UPDATE bd_inictel_dcc.curso SET nom_cur = ?,desc_cur = ?,area_cur = ?,estado_cur =?  WHERE cod_cur = ?;"; 
			pst = cn.prepareStatement(sql);
			
			pst.setString(1, bean.getNombre());
			pst.setString(2, bean.getDescripcion());
			pst.setString(3, bean.getArea());
			pst.setInt(4, bean.getEstado());
			pst.setString(5, bean.getCodigo());
			salida = pst.executeUpdate();

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				cn.close();
				pst.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}

		return salida;
	}

	@Override
	public String BuscarCurso() {
		String codi = null;
		Connection cn = null;
		PreparedStatement pst = null;
		ResultSet rs = null;
		try {
			cn = new BDConexion().obtenerConexion();
			String sql = "select concat(c.identificador,c.numerador) as codigo from correlativo c where c.identificador ='CUR'";
			pst = cn.prepareStatement(sql);
			rs = pst.executeQuery();
			while (rs.next()) {
				codi = rs.getString(1);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				cn.close();
				pst.close();
				rs.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
		return codi;
	}

	

}
